home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 October: Technology Seed / ADC Seed CD - October 1999.toast / Carbon SDK 1.0d10c3 / Sample Code / SimpleText / ThreeDMetafile.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-04  |  12.7 KB  |  301 lines  |  [TEXT/CWIE]

  1. /*
  2.     File:        ThreeDMetafile.h
  3.  
  4.     Contains:    3D viewer support for SimpleText
  5.  
  6.     Version:    GX 1.2 or later
  7.  
  8.     Written by: Eiichiro Mikami, Tom Dowdy
  9.  
  10.     Copyright:    © 1994-1996 by Apple Computer, Inc., all rights reserved.
  11.  
  12.     File Ownership:
  13.  
  14.         DRI:                Tom Dowdy
  15.  
  16.         Other Contact:        Jim Negrette
  17.  
  18.         Technology:            Macintosh Graphics Group
  19.  
  20.     Writers:
  21.  
  22.         (ted)    Tom Dowdy
  23.         (ecs)    Eric Schlegel
  24.  
  25.     Change History (most recent first):
  26.  
  27.     $Log: ThreeDMetafile.h,v $
  28.     Revision 1.1.1.1  1998/03/18 22:56:12  ivory
  29.     Initial checkin of SimpleText.
  30.  
  31.         
  32.         1     7/28/97 11:25 AM Duane Byram
  33.         first added to Source Safe project
  34.  
  35.          <5>    11/25/96    ted        [1604457]  Fixing 3d crashing in FAT version.
  36.          <4>      2/8/96    ted        Fixing SC compiler problems
  37.          <3>      2/8/96    ted        Fixing SC compiler problems
  38.          <2>      1/4/96    ecs        compile w/ CodeWarrior
  39.          <1>     8/21/95    TD        First checked in.
  40.  
  41. */
  42.  
  43.  
  44. #include "SimpleText.h"
  45.  
  46.  
  47. #define kThreeDWindowID    kThreeDBaseID
  48.  
  49.  
  50. #ifndef REZ
  51.     typedef long ViewerObject;
  52.  
  53.     struct ThreeDDataRecord
  54.         {
  55.         WindowDataRecord        w;
  56.         
  57.         ViewerObject            viewerObject;
  58.         };
  59.     typedef struct ThreeDDataRecord ThreeDDataRecord, *ThreeDDataPtr;    
  60.  
  61.     enum {
  62.         kQ3ViewerShowBadge             = 1<<0,
  63.         kQ3ViewerActive                = 1<<1,
  64.         kQ3ViewerControllerVisible    = 1<<2,
  65.         kQ3ViewerDrawFrame            = 1<<3,
  66.         kQ3ViewerDraggingOff        = 1<<4,
  67.         
  68.         kQ3ViewerButtonCamera        = 1<<5,
  69.         kQ3ViewerButtonTruck        = 1<<6,
  70.         kQ3ViewerButtonOrbit        = 1<<7,
  71.         kQ3ViewerButtonZoom            = 1<<8,
  72.         kQ3ViewerButtonDolly        = 1<<9,
  73.         
  74.     
  75.         kQ3ViewerDefault = (
  76.                     kQ3ViewerActive        | kQ3ViewerControllerVisible | 
  77.                     kQ3ViewerButtonCamera  | kQ3ViewerButtonTruck       | 
  78.                     kQ3ViewerButtonOrbit   | kQ3ViewerButtonDolly )
  79.     };
  80.  
  81.     enum {
  82.         uppViewerLibNewProcInfo = kCStackBased
  83.              | RESULT_SIZE(SIZE_CODE(sizeof(Ptr)))
  84.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(CGrafPtr)))
  85.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
  86.              | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
  87.         uppViewerLibDisposeProcInfo = kCStackBased
  88.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  89.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr))),
  90.  
  91.         uppViewerLibUseFileProcInfo = kCStackBased
  92.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  93.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  94.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
  95.         uppViewerLibUseDataProcInfo = kCStackBased
  96.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  97.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  98.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void*)))
  99.              | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
  100.  
  101.         uppViewerLibWriteFileProcInfo = kCStackBased
  102.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  103.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  104.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
  105.         uppViewerLibWriteDataProcInfo = kCStackBased
  106.              | RESULT_SIZE(SIZE_CODE(sizeof(unsigned long)))
  107.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  108.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void**))),
  109.  
  110.         uppViewerLibDrawProcInfo = kCStackBased
  111.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  112.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
  113.  
  114.         uppViewerLibGetPictProcInfo = kCStackBased
  115.              | RESULT_SIZE(SIZE_CODE(sizeof(PicHandle)))
  116.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
  117.         uppViewerLibGetButtonRectProcInfo = kCStackBased
  118.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  119.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  120.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(unsigned long)))
  121.              | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Rect*))),
  122.  
  123.         uppViewerLibGetDimensionProcInfo = kCStackBased
  124.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  125.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  126.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long*)))
  127.              | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long*))),
  128.  
  129.         uppViewerLibSetFlagsProcInfo = kCStackBased
  130.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  131.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  132.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(unsigned long))),
  133.         uppViewerLibGetFlagsProcInfo = kCStackBased
  134.              | RESULT_SIZE(SIZE_CODE(sizeof(unsigned long)))
  135.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
  136.  
  137.         uppViewerLibSetBoundsProcInfo = kCStackBased
  138.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  139.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  140.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*))),
  141.         uppViewerLibGetBoundsProcInfo = kCStackBased
  142.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  143.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  144.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*))),
  145.  
  146.         uppViewerLibSetPortProcInfo = kCStackBased
  147.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  148.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  149.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(CGrafPtr))),
  150.         uppViewerLibGetPortProcInfo = kCStackBased
  151.              | RESULT_SIZE(SIZE_CODE(sizeof(CGrafPtr)))
  152.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
  153.  
  154.         uppViewerLibEventProcInfo = kCStackBased
  155.              | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  156.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  157.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(EventRecord*))),
  158.         uppViewerLibAdjustCursorProcInfo = kCStackBased
  159.              | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  160.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  161.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Point*))),
  162.  
  163.         uppViewerLibGetStateProcInfo = kCStackBased
  164.              | RESULT_SIZE(SIZE_CODE(sizeof(unsigned long)))
  165.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
  166.  
  167.         uppViewerLibClearProcInfo = kCStackBased
  168.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  169.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
  170.         uppViewerLibCutProcInfo = kCStackBased
  171.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  172.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
  173.         uppViewerLibCopyProcInfo = kCStackBased
  174.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  175.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
  176.         uppViewerLibPasteProcInfo = kCStackBased
  177.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  178.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  179.  
  180.         };
  181.         
  182.     // Proc pointer typedefs
  183.     typedef ViewerObject (*ViewerLib_NewType) (CGrafPtr port,  Rect *rect,  unsigned long flags);
  184.     typedef OSErr (*ViewerLib_DisposeType) (ViewerObject theViewer);
  185.  
  186.     typedef OSErr (*ViewerLib_UseFileType) (ViewerObject theViewer, long refNum);
  187.     typedef OSErr (*ViewerLib_UseDataType)  (ViewerObject theViewer, void *data, long size);
  188.  
  189.     typedef OSErr (*ViewerLib_WriteFileType) (ViewerObject theViewer, long refNum);
  190.     typedef unsigned long (*ViewerLib_WriteDataType)  (ViewerObject theViewer, void **data);
  191.  
  192.     typedef OSErr (*ViewerLib_DrawType) (ViewerObject theViewer);
  193.  
  194.     typedef PicHandle (*ViewerLib_GetPictType) (ViewerObject theViewer);
  195.     typedef OSErr     (*ViewerLib_GetButtonRectType) (ViewerObject theViewer, unsigned long button, Rect *rect);
  196.  
  197.     typedef OSErr (*ViewerLib_GetDimensionType) (ViewerObject theViewer, long *width, long* height);
  198.     
  199.     typedef OSErr (*ViewerLib_SetFlagsType) (ViewerObject theViewer, unsigned long flags);
  200.     typedef unsigned long (*ViewerLib_GetFlagsType) (ViewerObject theViewer);
  201.  
  202.     typedef OSErr (*ViewerLib_SetBoundsType) (ViewerObject theViewer, Rect *bounds);
  203.     typedef OSErr (*ViewerLib_GetBoundsType) (ViewerObject theViewer, Rect *bounds);
  204.  
  205.     typedef OSErr (*ViewerLib_SetPortType) (ViewerObject theViewer, CGrafPtr port);
  206.     typedef CGrafPtr (*ViewerLib_GetPortType) (ViewerObject theViewer);
  207.  
  208.     typedef Boolean (*ViewerLib_EventType) (ViewerObject theViewer, EventRecord *evt);
  209.     typedef Boolean (*ViewerLib_AdjustCursorType) (ViewerObject theViewer, Point *pt);
  210.  
  211.     typedef unsigned long (*ViewerLib_GetStateType) (ViewerObject theViewer);
  212.  
  213.     typedef OSErr (*ViewerLib_ClearType) (ViewerObject theViewer);
  214.     typedef OSErr (*ViewerLib_CutType) (ViewerObject theViewer);
  215.     typedef OSErr (*ViewerLib_CopyType) (ViewerObject theViewer);
  216.     typedef OSErr (*ViewerLib_PasteType) (ViewerObject theViewer);
  217.  
  218.  
  219.     typedef struct
  220.         {
  221.         ProcInfoType        info;
  222.         void                *entry;
  223.         } GlobalEntry;
  224.         
  225.     // Macro calls
  226.     #if GENERATINGCFM
  227.         #define ViewerLib_New(A,B,C) CallUniversalProc(gProcPointers[0].entry, uppViewerLibNewProcInfo, A, B, C)
  228.         #define ViewerLib_Dispose(A) CallUniversalProc(gProcPointers[1].entry, uppViewerLibDisposeProcInfo, A)
  229.         
  230.         #define ViewerLib_UseFile(A,B) CallUniversalProc(gProcPointers[2].entry, uppViewerLibUseFileProcInfo, A, B)
  231.         #define ViewerLib_UseData(A,B,C) CallUniversalProc(gProcPointers[3].entry, uppViewerLibUseDataProcInfo, A, B, C)
  232.     
  233.         #define ViewerLib_WriteFile(A,B) CallUniversalProc(gProcPointers[4].entry, uppViewerLibWriteFileProcInfo, A, B)
  234.         #define ViewerLib_WriteData(A,B) CallUniversalProc(gProcPointers[5].entry, uppViewerLibWriteDataProcInfo, A, B)
  235.         
  236.         #define ViewerLib_Draw(A) CallUniversalProc(gProcPointers[6].entry, uppViewerLibDrawProcInfo, A)
  237.     
  238.         #define ViewerLib_GetPict(A) CallUniversalProc(gProcPointers[7].entry, uppViewerLibGetPictProcInfo, A)
  239.         #define ViewerLib_GetButtonRect(A,B,C) CallUniversalProc(gProcPointers[8].entry, uppViewerLibGetButtonRectProcInfo, A,B,C)
  240.     
  241.         #define ViewerLib_GetDimension(A,B,C) CallUniversalProc(gProcPointers[9].entry, uppViewerLibGetDimensionProcInfo, A,B,C)
  242.         
  243.         #define ViewerLib_SetFlags(A,B) CallUniversalProc(gProcPointers[10].entry, uppViewerLibSetFlagsProcInfo, A, B)
  244.         #define ViewerLib_GetFlags(A) CallUniversalProc(gProcPointers[11].entry, uppViewerLibGetFlagsProcInfo, A)
  245.     
  246.         #define ViewerLib_SetBounds(A,B) CallUniversalProc(gProcPointers[12].entry, uppViewerLibSetBoundsProcInfo, A, B)
  247.         #define ViewerLib_GetBounds(A,B) CallUniversalProc(gProcPointers[13].entry, uppViewerLibGetBoundsProcInfo, A, B)
  248.     
  249.         #define ViewerLib_SetPort(A,B) CallUniversalProc(gProcPointers[14].entry, uppViewerLibSetPortProcInfo, A, B)
  250.         #define ViewerLib_GetPort(A) CallUniversalProc(gProcPointers[15].entry, uppViewerLibGetPortProcInfo, A)
  251.     
  252.         #define ViewerLib_Event(A,B) CallUniversalProc(gProcPointers[16].entry, uppViewerLibEventProcInfo, A, B)
  253.         #define ViewerLib_AdjustCursor(A,B) CallUniversalProc(gProcPointers[17].entry, uppViewerLibAdjustCursorProcInfo, A, B)
  254.     
  255.         #define ViewerLib_GetState(A) CallUniversalProc(gProcPointers[18].entry, uppViewerLibGetStateProcInfo, A)
  256.     
  257.         #define ViewerLib_Clear(A) CallUniversalProc(gProcPointers[19].entry, uppViewerLibClearProcInfo, A)
  258.         #define ViewerLib_Cut(A) CallUniversalProc(gProcPointers[20].entry, uppViewerLibCutProcInfo, A)
  259.         #define ViewerLib_Copy(A) CallUniversalProc(gProcPointers[21].entry, uppViewerLibCopyProcInfo, A)
  260.         #define ViewerLib_Paste(A) CallUniversalProc(gProcPointers[22].entry, uppViewerLibPasteProcInfo, A)
  261.     #else
  262.         #define ViewerLib_New(A,B,C) (*(ViewerLib_NewType)(gProcPointers[0].entry)) (A, B, C)
  263.         #define ViewerLib_Dispose(A) (*(ViewerLib_DisposeType)(gProcPointers[1].entry)) (A)
  264.         
  265.         #define ViewerLib_UseFile(A,B) (*(ViewerLib_UseFileType)(gProcPointers[2].entry)) (A, B)
  266.         #define ViewerLib_UseData(A,B,C) (*(ViewerLib_UseDataType)(gProcPointers[3].entry)) (A, B, C)
  267.     
  268.         #define ViewerLib_WriteFile(A,B) (*(ViewerLib_WriteFileType)(gProcPointers[4].entry)) (A, B)
  269.         #define ViewerLib_WriteData(A,B) (*(ViewerLib_WriteDataType)(gProcPointers[5].entry)) (A, B)
  270.         
  271.         #define ViewerLib_Draw(A) (*(ViewerLib_DrawType)(gProcPointers[6].entry)) (A)
  272.     
  273.         #define ViewerLib_GetPict(A) (*(ViewerLib_GetPictType)(gProcPointers[7].entry)) (A)
  274.         #define ViewerLib_GetButtonRect(A,B,C) (*(ViewerLib_GetButtonRectType)(gProcPointers[8].entry)) (A,B,C)
  275.     
  276.         #define ViewerLib_GetDimension(A,B,C) (*(ViewerLib_GetDimensionType)(gProcPointers[9].entry)) (A,B,C)
  277.         
  278.         #define ViewerLib_SetFlags(A,B) (*(ViewerLib_SetFlagsType)(gProcPointers[10].entry)) (A, B)
  279.         #define ViewerLib_GetFlags(A) (*(ViewerLib_GetFlagsType)(gProcPointers[11].entry)) (A)
  280.     
  281.         #define ViewerLib_SetBounds(A,B) (*(ViewerLib_SetBoundsType)(gProcPointers[12].entry)) (A, B)
  282.         #define ViewerLib_GetBounds(A,B) (*(ViewerLib_GetBoundsType)(gProcPointers[13].entry)) (A, B)
  283.     
  284.         #define ViewerLib_SetPort(A,B) (*(ViewerLib_SetPortType)(gProcPointers[14].entry)) (A, B)
  285.         #define ViewerLib_GetPort(A) (*(ViewerLib_GetPortType)(gProcPointers[15].entry)) (A)
  286.     
  287.         #define ViewerLib_Event(A,B) (*(ViewerLib_EventType)(gProcPointers[16].entry)) (A, B)
  288.         #define ViewerLib_AdjustCursor(A,B) (*(ViewerLib_AdjustCursorType)(gProcPointers[17].entry)) (A, B)
  289.     
  290.         #define ViewerLib_GetState(A) (*(ViewerLib_GetStateType)(gProcPointers[18].entry)) (A)
  291.     
  292.         #define ViewerLib_Clear(A) (*(ViewerLib_ClearType)(gProcPointers[19].entry)) (A)
  293.         #define ViewerLib_Cut(A) (*(ViewerLib_CutType)(gProcPointers[20].entry)) (A)
  294.         #define ViewerLib_Copy(A) (*(ViewerLib_CopyType)(gProcPointers[21].entry)) (A)
  295.         #define ViewerLib_Paste(A) (*(ViewerLib_PasteType)(gProcPointers[22].entry)) (A)
  296.  
  297.     #endif
  298.     
  299.  
  300. #endif
  301.